home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_06 / prince / math.h < prev    next >
Text File  |  1994-01-24  |  3KB  |  100 lines

  1. /* math.h standard header */
  2. #ifndef _MATH
  3. #define _MATH
  4.         /* macros */
  5. /* some constants from traditional <math.h> and XOPEN */
  6. #  define M_E        2.7182818284590452354
  7. #  define M_LOG2E    1.4426950408889634074
  8. #  define M_LOG10E    0.43429448190325182765
  9. #  define M_LN2        0.69314718055994530942
  10. #  define M_LN10    2.30258509299404568402
  11. #  define M_PI        3.14159265358979323846
  12. #  define M_PI_2    1.57079632679489661923
  13. #  define M_PI_4    0.78539816339744830962
  14. #  define M_1_PI    0.31830988618379067154
  15. #  define M_2_PI    0.63661977236758134308
  16. #  define M_2_SQRTPI    1.12837916709551257390
  17. #  define M_SQRT2    1.41421356237309504880
  18. #  define M_SQRT1_2    0.70710678118654752440
  19.         /* type definitions */
  20. typedef const union {
  21.     unsigned long _W[2];
  22.     double _D;
  23.     } _Dconst;
  24.         /* declarations */
  25. double acos(double);
  26. double asin(double);
  27. double atan(double);
  28. double atan2(double, double);
  29. double ceil(double);
  30. double cos(double);
  31. double cosh(double);
  32. double exp(double);
  33. double fabs(double);
  34. double floor(double);
  35. double fmod(double, double);
  36. double frexp(double, int *);
  37. double ldexp(double, int);
  38. double log(double);
  39. double log10(double);
  40. double modf(double, double *);
  41. double pow(double, double);
  42. double sin(double);
  43. double sinh(double);
  44. double sqrt(double);
  45. double tan(double);
  46. double tanh(double);
  47. double _Asin(double, int);
  48. double _Log(double, int);
  49. double _Sin(double, unsigned int);
  50. extern _Dconst _Hugeval;
  51.         /* macro overrides */
  52. #define acos(x)    _Asin(x, 1)
  53. #define asin(x)    _Asin(x, 0)
  54. #define atan(x) atan2(x,1.)
  55. #define cos(x)    _Sin(x, 1)
  56. #define log10(x) log(x)*M_LOG10E
  57. #define sin(x)    _Sin(x, 0)
  58. float acosf(float);
  59. float asinf(float);
  60. float atanf(float);
  61. float atan2f(float, float);
  62. float ceilf(float);
  63. float cosf(float);
  64. float coshf(float);
  65. float expf(float);
  66. float fabsf(float);
  67. float floorf(float);
  68. float fmodf(float, float);
  69. float frexpf(float, int *);
  70. float ldexpf(float, int);
  71. float logf(float);
  72. float log10f(float);
  73. float modff(float, float *);
  74. float powf(float, float);
  75. float sinf(float);
  76. float sinhf(float);
  77. float sqrtf(float);
  78. float tanf(float);
  79. float tanhf(float);
  80. typedef struct{float s;float c;float t;}_scos;
  81. _scos _Sinf(double);
  82. double _Logf(double);
  83. #define atanf(x) atan2f(x,1.f)
  84. #define cosf(x)    _Sinf(x).c
  85. #define frexpf(x,p) (float)frexp(x,p)
  86. #define ldexpf(x,y) (float)ldexp(x,y)
  87. #define logf(x)    (float)_Logf(x)
  88. #define log10f(x) (float)(M_LOG10E*_Logf(x))
  89. #define sinf(x)    _Sinf(x).s
  90. #define tanf(x)    _Sinf(x).t
  91. /* following macros are unsafe when x,y have side effects */
  92. #define acosf(x) atan2f((float)sqrt((1-(double)(x)*(x))),x)
  93. #define asinf(x) atan2f(x,(float)sqrt((1-(double)(x)*(x))))
  94. #define ceilf(x) (float)(long int)((x)>0?1-.25*FLT_EPSILON+(x):(x))
  95. #define fabsf(x) ((x)<0?-(x):(x))   /* not if compiler has own code */
  96. #define floorf(x) (float)(long int)((x)<0?.25*FLT_EPSILON-1+(x):(x))
  97. #define fmodf(x,y) (float)((x)-(long int)((x)/(y))*(double)(y))
  98. #define modff(x,p) ((x)-(*p=(long int)(x)))
  99. #endif
  100.